/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package acceso_datos;

import datos.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Pablo
 */
public class RegistroLlamadaDB {
    public boolean grabar(RegistroLlamada regLlam) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        
        DateFormat df = new SimpleDateFormat("yyyy/MM/dd");  
        String fecha = df.format(regLlam.getFecha());  
        
        String query = "insert into registro_llamada values("
                + "" + regLlam.getId()
                + ",'" + fecha
                + "','" + regLlam.getHora().toString()
                + "','" + regLlam.getCalle1()
                +"','"+regLlam.getCalle2()
                +"','"+regLlam.getNotificador().getCedula()
                + "','"+regLlam.getOperador().getCedula()
                +"')";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;               
    }
    
    
    public RegistroLlamada buscar(String id) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query="select * from registro_llamada where id_registro_llamada =" + id + "";
        ResultSet resultado = db.seleccion(query);
        RegistroLlamada registroLlamada=null;
        
        if (resultado!=null) {
            
            resultado.next();
            registroLlamada=new RegistroLlamada();
            registroLlamada.setId(resultado.getInt(1));
            registroLlamada.setFecha(resultado.getDate(2));
            registroLlamada.setHora(resultado.getTime(3));
            registroLlamada.setCalle1(resultado.getString(4));
            registroLlamada.setCalle2(resultado.getString(5));
            
            NotificadorDB ndb=new NotificadorDB();
            Notificador n=ndb.buscar(resultado.getString(6));
            registroLlamada.setNotificador(n);
            
            OperadorDB odb=new OperadorDB();
            Operador o=odb.buscar(resultado.getString(7));
            registroLlamada.setOperador(o);
            
        }
        db.cerrarConexion();
        return registroLlamada;
    }
    public HashMap<Integer, RegistroLlamada> listar() throws SQLException {
       OperacionesBase db = new OperacionesBase();
        String query="select * from registro_llamada ";
        ResultSet resultado = db.seleccion(query);
        RegistroLlamada registroLlamada=null;
        HashMap<Integer, RegistroLlamada> todos=new HashMap<Integer, RegistroLlamada>();
        while (resultado.next()) {
            
            
            registroLlamada=new RegistroLlamada();
            registroLlamada.setId(resultado.getInt(1));
            registroLlamada.setFecha(resultado.getDate(2));
            registroLlamada.setHora(resultado.getTime(3));
            registroLlamada.setCalle1(resultado.getString(4));
            registroLlamada.setCalle2(resultado.getString(5));
            
            NotificadorDB ndb=new NotificadorDB();
            Notificador n=ndb.buscar(resultado.getString(6));
            registroLlamada.setNotificador(n);
            
            OperadorDB odb=new OperadorDB();
            Operador o=odb.buscar(resultado.getString(7));
            registroLlamada.setOperador(o);
            
            todos.put(registroLlamada.getId(),registroLlamada);
        }
        db.cerrarConexion();
        return todos;
    }
    
    public int getMaxId(){
        int max = -1;
        try {
            OperacionesBase db = new OperacionesBase();
            String query = "select max(id_registro_llamada) from registro_llamada ";
            ResultSet resultado = db.seleccion(query);
            
            while (resultado.next()) {

                max = resultado.getInt(1);
            }
            db.cerrarConexion();
            
        } catch (SQLException ex) {
            Logger.getLogger(RegistroLlamadaDB.class.getName()).log(Level.SEVERE, null, ex);
        }
        return max;
    }
}
